package trying.TotalFileSize;

import java.io.File;

public class GetFileInfo {
    //遍历及产生缩进
    //两个参数，文件路径或文件名，以当前目录为父目录统计目录的深度（即函数递归的次数）
    public void putGetFileInfo(String GetFileInfo, int count){
        count++;
        File file = new File(GetFileInfo);
        if(file.isFile()){
            for(int k=0;k<count-1;k++){
                System.out.print("|   ");
            }
            System.out.println(file.getName());
        } else if (file.isDirectory() && this.getPermission(file)){
            File[] list = file.listFiles();
            for(int i=0; i<list.length; i++){
                if(list[i].isDirectory()){
                    for(int k = 0; k < count; k++){
                        System.out.print("|   ");
                    }
                    System.out.println(list[i].getName());
                }
                //在这儿进行递归调用
                putGetFileInfo(list[i].getPath(), count);
            }
        }
    }

    //判断是否有读取文件的权限
    public boolean getPermission(File file){
        boolean flag = false;
        try {
            File[] list = file.listFiles();
            @SuppressWarnings("unused")
            //此方法的关键点，看这句话是否产生异常（产生异常则不能访问，没有异常则正常访问）
            int i = list.length;
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }

    //生成main方法调用
    public static void main(String[] args) {
        //指定要遍历的目录
        String GetFileInfo = "E:/";
        GetFileInfo fn = new GetFileInfo();
        fn.putGetFileInfo(GetFileInfo, -1);
    }
}
